
flag = "RDGCTF{6th_grade_is_cool}"

def Cont_Sum(text):
    t, e = int(text[:text.index(' ')]), int(text[text.index(' '):])
    res = t*10 + e
    Col = len(str(res))
    res = str(Col) + str(res%2) + str(res%3) + str(res%5)
    return res

def main():
    print("Осторожно!!! Вам предлагают занятся незаконным делом.")
    print("Вы производите покупку по интернет магазину. Вы отправляете название заказа и его цену. После компьютер проверяет эту цену с контрольной суммой к нему. Если контрольная сумма верна, то вам одобрают покупку")
    print('Нам удалось узнать как генерируется контрольная сумма к товару:\n1) Число в тысячах умножается на 10 после складывается с числом рублей\n2) После считается количество цифр в полученном числе, а так же от данного числа находят остаток от деления на 2, на 3 и на 5.\n3) Полученные числа соединяются в одно')
    print('\nПример отправленого сообщения: "Телевизор 34 580"')
    print('Пример генерации контрольной суммы с телевизором:\n1) 34*10 + 580 = 920\n2)Количество цифр в 920: 3. Остаток от деления 920 на 2: 0, на 3: 2, на 5: 0.\n3) Полученная контрольная сумма к телевизру: 3020')
    print('Вместо реальной цены телевизора можно было отправить 15 110 рублей. При этом контрольная сумма была такой же и компьютер не заметил бы подмены')
    print('\nВам необходимо купить все товары в магазине. Но на вашем счёте не хватает денег, так что вам предстоит обмануть компьютер. Но учтите, что нет товаров которые стоят меньше тясячи рублей')
    Tov = {'Телевизор': '34 580', 'Микроволновка': '3 523', 'Холодильник': '125 346', 'Компьютер': '155 245'}
    print('\nСписок товаров:')
    for i in Tov:
        print(i, Tov[i])
    S = 1100 + 1093 + 3996 + 2995
    Poc = []
    F = True
    while True:
        print('\nНа вашем счёте', S, 'рублей')
        if input("Если хотите закончить покупки то введите 1: ") == '1':
            break
        while True:
            try:
                Z = input("Введите название и цену покупки: ").strip().capitalize()
                name, prise = Z[:Z.index(' ')], Z[Z.index(' '):].strip()
                break
            except:
                print("некорректный ввод")
        if name in Tov:
            try:
                t, e = int(prise[:prise.index(' ')]), int(prise[prise.index(' '):])
            except:
                print("Цена введена некорректно")
            if t < 1 or e < 0:
                print("У товара не может быть такой цены. Вы пытались обмануть магазин. ЗА ВАМИ ВЫЕХАЛА ПОЛИЦИЯ")
                F = False
                break
            if Cont_Sum(Tov[name]) == Cont_Sum(prise):
                S -= t*1000 + e
                if S < 0:
                    print("У вас нет указанной суммы. Вы пытались обмануть магазин. ЗА ВАМИ ВЫЕХАЛА ПОЛИЦИЯ")
                    F = False
                    break
                print("Покупка прошла успешно")
                Poc += [name]
            else:
                print("Контрольная сумма не совпала. Вы пытались обмануть магазин. ЗА ВАМИ ВЫЕХАЛА ПОЛИЦИЯ")
                F = False
                break
        else:
            print("Такого товара нет в магазине")
    print("Список ваших покупок:", Poc)
    if F:
        b = True
        for i in Tov:
            if not(i in Poc):
                b = False
        if b:
            print("Ты победил!!! =)", flag)
        else:
            if Poc == []:
                print("Молодец что отказался. Нельзя воровать")
            else:
                print("Ты не справился с задачей, твои сообщники тебя сдали. ЗА ВАМИ ВЫЕХАЛА ПОЛИЦИЯ")

if __name__ == "__main__":
    main()
    input()
